Add riscv64 support
authorGuo Ren <guoren@linux.alibaba.com>
Wed, 29 Jun 2022 08:46:46 +0000 (16:46 +0800)
committerEmmanuel Bourg <ebourg@apache.org>
Wed, 17 May 2023 07:45:36 +0000 (08:45 +0100)
commit5be7d2a6a09cc7768a8c659a88fd6435b6846d36
tree0c2d4f8bc7f9e0fad5720627e9e6aebffc800fee
parentdfd5e34d02803ac33e4548fd60a3b4de63229a37
Add riscv64 support

This patch contains the dwarf unwind support for 64bit risc-v.

    * DwarfCfa.cpp (cfa_def_cfa_register): setup register if CFA_REG is
    not setup for riscv64
    * Elf.cpp (GetRelPc): convert offset to virtual address for riscv64.
    * ElfInterface.cpp (GetVirtAddrFromOffset): New for riscv64.
    * RegsRiscv64.cpp (StepIfSignalHandler): Fix signal frame check.
    libunwindstack/include/unwindstack/
    * ElfInterface.h (GetVirtAddrFromOffset): New for riscv64.
    libunwindstack/tests/
    * DwarfCfaTest.cpp (cfa_def_cfa_register): ok for riscv64.
    * RegsStepIfSignalHandlerTest.cpp (riscv64_step_if_signal_handler): Fix
    testcase for riscv64

Test: Builds.
Test: All unit tests pass.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Lifang Xia <lifang_xia@linux.alibaba.com>
Signed-off-by: Mao Han <han_mao@linux.alibaba.com>
Change-Id: Ib21ddf23cc83f332af202df7bffcaceec16063e0

Gbp-Pq: Topic system/core
Gbp-Pq: Name Add-riscv64-support.patch
12 files changed:
system/core/libunwindstack/Android.bp
system/core/libunwindstack/Elf.cpp
system/core/libunwindstack/Regs.cpp
system/core/libunwindstack/RegsRiscv64.cpp [new file with mode: 0644]
system/core/libunwindstack/include/unwindstack/Elf.h
system/core/libunwindstack/include/unwindstack/MachineRiscv64.h [new file with mode: 0644]
system/core/libunwindstack/include/unwindstack/RegsGetLocal.h
system/core/libunwindstack/include/unwindstack/RegsRiscv64.h [new file with mode: 0644]
system/core/libunwindstack/include/unwindstack/UcontextRiscv64.h [new file with mode: 0644]
system/core/libunwindstack/include/unwindstack/UserRiscv64.h [new file with mode: 0644]
system/core/libunwindstack/tools/unwind.cpp
system/core/libunwindstack/tools/unwind_symbols.cpp